Low-density parity-check (LDPC) codes have recently been the subject of increased research interest for their enhanced performance on additive white Gaussian noise (AWGN) channels. As described by Shannon's Channel Coding Theorem, the best performance is achieved when using a code consisting of very long codewords. In practice, codeword size is limited in the interest of reducing complexity, buffering, and delays. LDPC codes are block codes, as opposed to trellis codes that are built on convolutional codes. LDPC codes constitute a large family of codes including turbo codes. Block codewords are generated by multiplying (modulo 2) binary information words with a binary matrix generator. LDPC codes use a check parity matrix H, which is used for decoding. The term low density derives from the characteristic that the check parity matrix has a very low density of non-zero values, making it a relatively low complexity decoder while retaining good error protection properties.
The parity check matrix H measures (N−K)×N, wherein N represents the number of elements in a codeword and K represents the number of information elements in the codeword. The matrix H is also termed the LDPC mother code. For the specific example of a binary alphabet, N is the number of bits in the codeword and K is the number of information bits contained in the codeword for transmission over a wireless or a wired communication network or system. The number of information elements is therefore less than the number of codeword elements, so K<N. FIGS. 1a and 1b graphically describe an LDPC code. The parity check matrix 10 of FIG. 1a is an example of a commonly used 512×4608 matrix, wherein each matrix column 12 corresponds to a codeword element (variable node of FIG. 1b) and each matrix row 14 corresponds to a parity check equation (check node of FIG. 1b). If each column of the matrix H includes exactly the same number m of non-zero elements, and each row of the matrix H includes exactly the same number k of non-zero elements, the matrix represents what is termed a regular LDPC code. If the code allows for non-uniform counts of non-zero elements among the columns and/or rows, it is termed an irregular LDPC code.
Irregular LDPC codes have been shown to significantly outperform regular LDPC codes, which has generated renewed interest in this coding system since its inception decades ago. The bipartite graph of FIG. 1b illustrates that each codeword element (variable nodes 16) is connected only to parity check equations (check nodes 18) and not directly to other codeword elements (and vice versa). Each connection, termed a variable edge 20 or a check edge 22 (each edge represented by a line in FIG. 1b), connects a variable node to a check node and represents a non-zero element in the parity check matrix H. The number of variable edges connected to a particular variable node 16 is termed its degree, and the number of variable degrees 24 are shown corresponding to the number of variable edges emanating from each variable node. Similarly, the number of check edges connected to a particular check node is termed its degree, and the number of check degrees 26 are shown corresponding to the number of check edges 22 emanating from each check node. Since the degree (variable, check) represents non-zero elements of the matrix H, the bipartite graph of FIG. 1b represents an irregular LDPC code matrix. The following discussion is directed toward irregular LDPC codes since they are more complex and potentially more useful, but may also be applied to regular LDPC codes with normal skill in the art.
Conventional LDPC coding techniques often operate based upon assumptions on channel models (e.g., additive white Gaussian noise (AWGN) channel, binary erasure channel (BEC), etc.) to design code ensembles. Likewise, decisions on implementation tradeoffs with respect to the design of the parity-check matrices are typically made well in advance before solutions are delivered and cannot be easily changed after a standard specifies the transmitter characteristics. As new applications arise, however, new channels may be encountered to which legacy code ensembles may no longer apply. Likewise, hardware and system requirements may change with the new applications such that inefficiencies arise in the receiver and the communication system.